Functional block design method and apparatus

ABSTRACT

A functional block design method capable of shortening the period needed for developing functional blocks in compliance with orders. A logic design is prepared for a desired number of memory floor plan blocks with respective predetermined data storage capacities and a fixed block different from the memory floor plan blocks, and block-based design data is created in compliance with the logic design. The created block-based design data is verified in that a constraint on the creation of a CPU macro is always fulfilled within the limits up to which the memory blocks can be mounted. Using the verified block-based design data, design data of a CPU macro functional block in which a desired number of memory blocks corresponding to a desired memory capacity are connected to the fixed block is generated.

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application is based upon and claims the benefits of priority from the prior Japanese Patent Application No. 2002-248439, filed on Aug. 28, 2002, the entire contents of which are incorporated herein by reference.

BACKGROUND OF THE INVENTION

[0002] (1) Field of the Invention

[0003] The present invention relates to a functional block design method for designing a functional block including memory and a functional block design apparatus for carrying out the method, and more particularly, to a functional block design method for designing a functional block incorporating therein memory with a desired capacity complying with an order and a functional block design apparatus for carrying out the method.

[0004] (2) Description of the Related Art

[0005] Nowadays various electronic devices are controlled by LSI (Large Scale Integrated) control units (system LSIs) incorporated therein. In recent years, there has been an increasing demand for curtailment of the period needed for the development of such electronic devices so that the devices can be promptly placed on the market. Thus, also in the case of system LSIs incorporated in electronic devices, there has been a demand for shorter-period development of optimum system LSIs with high functionality.

[0006] Techniques for developing a system LSI in a short period of time include a method wherein circuit design and verification of operation are carried out for each function of the system LSI. A circuit block (functional block) associated with each function is called macro, and macros required to control an electronic device are combined to develop a system LSI necessary for the electronic device.

[0007] Among the macros constituting a system LSI, a macro including a CPU (Central Processing Unit) core circuit is referred to as CPU macro. A macro including a DSP (Digital Signal Processor) also comes under the concept of CPU macro.

[0008] The CPU macro includes a peripheral circuit, a memory circuit, etc. besides the CPU core circuit. By having a memory circuit built into the CPU macro, it is possible to verify, within the CPU core circuit, the operation of a basic process (e.g., a process requiring high-speed execution) executed by the CPU core circuit.

[0009] Meanwhile, the memory configuration (e.g., capacities of ROM (Read Only Memory) and RAM (Random Access Memory)) of the CPU macro is determined in accordance with the electronic device as an end product. Accordingly, the floor plan of the CPU macro needs to be determined for each product in which the system LSI is to incorporated. Thus, in order to speed up the development of system LSI, curtailment of the period needed for designing the floor plan of the CPU macro is also demanded.

[0010]FIGS. 8A to 8C illustrate conventional floor plans for CPU macros, wherein FIG. 8A shows a first example of floor plan, FIG. 8B shows a second example of floor plan, and FIG. 5C shows a third example of floor plan.

[0011] In the case of developing CPU macros, the required memory size/memory configuration varies from product to product, as shown in FIGS. 8A to 8C. Accordingly, the arrangement of the CPU core circuit, peripheral circuit, memory circuit, etc. is determined for individual products. The floor plan is so designed that the CPU macro as a whole may have an aspect ratio (vertical dimension-to-lateral dimension ratio) falling within a predetermined range. This is because the closer to square the aspect ratio is, the more easily an LSI chip can be designed during the development of the whole chip.

[0012] For example, in the floor plan shown in FIG. 8A, a CPU macro 910 has a CPU core circuit 911, a peripheral circuit 912 and a plurality of memory circuits 913 arranged therein. The CPU macro 910 is in the form of a rectangle having lateral sides with a length of X₁ and vertical sides with a length of Y₁, hence the aspect ratio (vertical dimension-to-lateral dimension ratio) being Y₁/X₁. This CPU macro 910 has a small memory capacity, compared with the other exemplary floor plans.

[0013] In the floor plan of FIG. 8B, a CPU macro 920 has a CPU core circuit 921, a peripheral circuit 922 and a plurality of memory circuits 923 arranged therein. The CPU macro 920 has lateral sides with a length of X₂ and vertical sides with a length of Y₂, and hence the aspect ratio is Y₂/X₂. The memory capacity of the CPU macro 920 is greater than that of the first example of floor plan but smaller than that of the third example of floor plan.

[0014] In the floor plan of FIG. 8C, a CPU macro 930 has a CPU core circuit 931, a peripheral circuit 932 and a plurality of memory circuits 933 arranged therein. The CPU macro 930 has lateral sides with a length of X₃ and vertical sides with a length of Y₃, and hence the aspect ratio is Y₃/X₃. This CPU macro 930 has a large memory capacity, compared with the other exemplary floor plans.

[0015] Thus, in the case of CPU macros designed in compliance with orders, the memory configuration/memory capacity varies even if the logical structure of the CPU core circuit and peripheral circuit is the same. Conventionally, therefore, floor planning is carried out for each CPU macro by determining the arrangement of the individual circuits so that the aspect ratio may fall within a certain range. Namely, even if the change made to the configuration of a CPU macro designed in the past involves memory capacity only, it is necessary that the CPU core circuit, the peripheral circuit and the memory circuits should individually be rearranged.

[0016] Also, in cases where a floor plan is newly prepared, the step of guaranteeing a certain operating frequency needs to be executed.

[0017]FIG. 9 illustrates a procedure for designing a CPU macro. First, the customer's specification is determined (Step S91), and then a logic design is prepared in compliance with the customer's specification (Step S92). After the logic design is completed, a floor plan/layout is determined (Step S93). Specifically, a CPU core circuit, a peripheral circuit and a plurality of memory circuits are arranged so that the aspect ratio may be within a predetermined range.

[0018] After the floor planning/layout is completed, the process separates into a timing verification procedure (Steps S94 to S98) and a physical verification procedure (Steps S99 to S101).

[0019] In the timing verification procedure (Steps S94 to S98), first, an RC extraction process is carried out (Step S94). In this step, a delay is calculated from the resistance (R) and electrostatic capacitance (C) of a plurality of sections in the circuit. Then, based on the extracted RC, timing verification is carried out (Step S95). Namely, it is verified whether signal is transmitted with correct timing as demanded by the logic design. The result of the verification is then checked (Step S96).

[0020] If the result of the verification is unsuitable, the CPU macro is again designed from the logic design (Step S92) or from the floor planning/layout (Step S93). Generally, in cases where the result of verification is unsuitable in initial stages, the floor planning/layout (Step S93) is carried out again. If the result of the timing verification becomes unsuitable even though the floor planning/layout (Step S93) is modified a plurality of times, then the logic design (Step S92) is prepared again.

[0021] If the result of the verification is suitable, a timing library is created (Step S97). The timing library has registered therein information about the propagation (delay etc.) of signal between the component elements (e.g., flip-flops).

[0022] In the physical verification procedure, first, physical verification is carried out (Step S99). As such physical verification, it is verified whether the physical arrangement such as a wiring pitch, for example, satisfies a condition specified by a predetermined rule. The result of the verification is then checked (Step S100).

[0023] If the result of the physical verification is unsuitable, the layout decision process of Step S93 is again performed.

[0024] If the result of the physical verification is OK, floor plan data and mask pattern data are generated (Step S101). The floor plan data is data indicating, for example, the positions of terminals provided to connect the CPU macro to other circuits. The mask pattern data is data indicating a mask pattern for the CPU macro. Subsequently, the generated timing library, floor plan data and mask pattern data are delivered to the customer.

[0025] In this manner, the configuration of the CPU macro whose operation at a certain operating frequency is guaranteed is determined.

[0026] Each time a floor plan is prepared anew, however, the timing verification and the physical verification need to be carried out to guarantee the operating frequency, and the floor planning/layout planning must be repeated until these verifications are established. If the floor plan/layout plan is modified, the timing and physical verifications must be again carried out, with the result that much time is needed for the development of CPU macros.

SUMMARY OF THE INVENTION

[0027] The present invention was created in view of the above circumstances, and an object thereof is to provide functional block design method and apparatus capable of shortening the period needed for the development of a functional block complying with an order.

[0028] To achieve the object, there is provided a functional block design method for designing a functional block including a memory. The functional block design method comprises creating block-based design data associated with each of a memory block with a predetermined data storage capacity and a fixed block different from the memory block, in accordance with a predetermined logic design, verifying with respect to the created block-based design data that a constraint on creation of the functional block is always fulfilled within limits up to which the memory blocks can be mounted, and generating, with use of the verified block-based design data, design data of a functional block in which a desired number of the memory blocks corresponding to a desired memory capacity are connected to the fixed block.

[0029] Also, to achieve the above object, there is provided a functional block design apparatus for automatically designing a functional block including a memory. The functional block design apparatus comprises a storage device for storing block-based design data associated with each of a memory block and a fixed block different from the memory block, the block-based design data being verified in that a constraint on creation of the functional block is always fulfilled within limits up to which the memory blocks can be mounted, and an arithmetic unit, responsive to an input specifying a memory capacity, for generating, with use of the block-based design data stored in the storage device, design data of a functional block in which a desired number of the memory blocks corresponding to the specified memory capacity are connected to the fixed block.

[0030] The above and other objects, features and advantages of the present invention will become apparent from the following description when taken in conjunction with the accompanying drawings which illustrate preferred embodiments of the present invention by way of example.

BRIEF DESCRIPTION OF THE DRAWINGS

[0031]FIG. 1 is a conceptual diagram illustrating the invention applied to embodiments;

[0032]FIG. 2 is a diagram illustrating an exemplary structure of design data;

[0033]FIG. 3 is a flowchart illustrating a procedure for a design data creation process;

[0034]FIG. 4 is a diagram illustrating information used in determining the shape of a fixed block;

[0035]FIG. 5 is a flowchart illustrating a procedure for a process for creating a floor plan in compliance with a customer's order;

[0036]FIG. 6 is a diagram illustrating an example of automatic creation of design data;

[0037]FIG. 7 is a diagram illustrating an exemplary hardware configuration of a computer for performing the function of a CPU macro generator;

[0038]FIGS. 8A, 8B and 8C are diagrams showing conventional floor plans for CPU macros, wherein FIG. 8A shows a first example of floor plan, FIG. 8B shows a second example of floor plan, and FIG. 8C shows a third example of floor plan; and

[0039]FIG. 9 is a flowchart illustrating a procedure for designing a CPU macro.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0040] Embodiments of the present invention will be hereinafter described with reference to the drawings.

[0041] First, the invention applied to the embodiments will be outlined, and then the embodiments will be described in detail. In the following description of the embodiments, a floor plan is designed for a CPU macro as an example of a functional block including a memory. Also, in the following, a memory block is referred to as memory floor plan block.

[0042]FIG. 1 is a conceptual diagram illustrating the invention applied to the embodiments, wherein X and Y axes are taken along the lateral direction and the vertical direction, respectively.

[0043] As a first step, the floor plan of a CPU macro 100 is divided into a region in which a fixed block 110 requiring no change is arranged, and memory floor plan regions 120 and 130 (variable memory capacity regions) in which are arranged memories whose configuration varies from customer to customer. The fixed block 110 includes a CPU core circuit and a peripheral circuit. The memory floor plan region 120 is located on an upper side of the fixed block 110 as viewed in FIG. 1, while the other memory floor plan region 130 is located on a lower side of the fixed block 110.

[0044] Although in the example shown in FIG. 1, the memory floor plan regions 120 and 130 are situated on the upper and lower sides of the fixed block 110, respectively, the regions 120 and 130 may alternatively be located on the left and right sides, respectively, of the fixed block 110. In this case, the vertical direction (Y-axis direction) and lateral direction (X-axis direction) appearing in the following description should be read vice versa.

[0045] As a second step, the shapes of the individual blocks are determined so that the aspect ratio (vertical dimension-to-lateral dimension ratio) of the CPU macro 100 may always fall within a predetermined range when a desired number of memory floor plan blocks 121, 122, . . . , 131, 132, 133, . . . are connected in compliance with a predetermined connection rule within the limits up to which the memory floor plan blocks can be mounted.

[0046] In the example of FIG. 1, the predetermined connection rule requires that the memory floor plan blocks 121, 122, . . . , 131, 132, 133, . . . should be concatenated in a direction intersecting with (e.g., in the vertical direction perpendicular to) the adjacent sides (sides with a length of X_(F)) of the fixed block 110 and memory floor plan blocks 121, 122, . . . , 131, 132, 133, . . . .

[0047] Also, in the example of FIG. 1, the fixed block 110 and the memory floor plan blocks 121, 122, . . . , 131, 132, 133, . . . are each in the form of a rectangle. Accordingly, the shapes of the individual blocks are determined as soon as the lengths of the vertical and lateral sides of the individual blocks are settled.

[0048] Thus, Y_(F) and X_(F) of the fixed region are determined so that Y_(S)/X_(S), which is the aspect ratio (vertical dimension-to-lateral dimension ratio) of the CPU macro 100, may fall within a predetermined range with respect to maximum and minimum memory areas determined in compliance with the specification of the CPU macro 100. In the illustrated example, Y_(S) denotes the length of the CPU macro 100 in the vertical direction, and the X_(S) denotes the length of the CPU macro 100 in the lateral direction. Also, Y_(F) denotes the length of the fixed block 110 in the vertical direction, and the X_(F) denotes the length of the fixed block 110 in the lateral direction. The value X_(F) is smaller than X_(S) by an amount corresponding to marginal spaces provided at both edges of the CPU macro 100.

[0049] Specifically, Y_(F)/X_(F) satisfying the following two conditions is obtained. The first condition is that, for a minimum memory configuration (Y_(S) is at a minimum), Y_(S)/X_(S) should be greater than or equal to the minimum value of the aspect ratio. The second condition is that, for a maximum memory configuration (Y_(S) is at a maximum), Y_(S)/X_(S) should be smaller than or equal to the maximum value of the aspect ratio.

[0050] The areas of the memory floor plan regions 120 and 130 are determined based on the maximum memory capacity. Namely, the memory floor plan regions 120 and 130 have a total area large enough to accommodate the number of memory floor plan blocks corresponding to the maximum memory capacity to be packaged in the CPU macro 100. The maximum memory capacity may be set to the size of memory space accessible from the CPU core circuit.

[0051] Also, the size of memory floor plan block varies depending on the memory type. For example, RAM occupies a larger area than ROM. In this case, the total area of the memory floor plan regions 120 and 130 is at the maximum when the largest possible number of RAMs are packaged. The orderable maximum memory capacity may be determined as desired insofar as the size of the memory space is not exceeded.

[0052] As a third step, the length of one side of each memory floor plan block is determined so that X_(B) may be almost equal to X_(F) determined in the second step. Then, in compliance with a predetermined logic design, design data (block-based design data) associated with each of memory blocks with predetermined data storage capacities and the fixed block is created.

[0053] As a fourth step, the created block-based design data is verified in that a constraint on the creation of the CPU macro 100 is always fulfilled within the limits up to which the memory floor plan blocks 121, 122, . . . , 131, 132, 133, . . . can be mounted. In this case, if it is ascertained that a memory configuration with respect to which the constraint is tightest satisfies the constraint, then it may be judged that the constraint is always fulfilled. The constraint may, for example, be a timing assurance that the signal delay does not exceed a prescribed value. Such timing assurance serves to verify that signal is transmitted correctly in synchronism with the intended operating frequency.

[0054] Specifically, timing is assured with respect to memory configurations which show the largest and smallest delay values along paths from the data output terminals of the memory floor plan blocks arranged above and below the fixed block 110 to the data output terminals of the CPU macro 100. The memory configuration with the largest delay value is a configuration in which the memory floor plan blocks are packaged to the maximum in the memory floor plan regions 120 and 130. The memory configuration with the smallest delay value is a configuration in which the memory floor plan blocks packaged in the memory floor plan regions 120 and 130 are at the minimum. If it is evident from the design of the CPU core circuit that no problem arises in cases where the delay value is small, the timing assurance for the memory configuration with the smallest delay value may be omitted.

[0055] As a fifth step, design data of the CPU macro 100 in which a required number of memory floor plan blocks 121, 122, . . . , 131, 132, 133, . . . corresponding to a desired memory capacity are connected to the fixed block 110 is created by using the verified block-based design data.

[0056] Specifically, a suitable number of memory floor plan blocks 121, 122, . . . , 131, 132, 133, . . . corresponding to the memory configuration ordered from the customer are arranged in the memory floor plan regions 120 and 130. In this case, the memory floor plan blocks 121, 122, . . . , 131, 132, 133, . . . are placed in sequence from the position nearest to the fixed block 110. For example, the memory floor plan blocks are positioned alternately in the upper and lower memory floor plan regions 120 and 130 in the order: memory floor plan block 121→memory floor plan block 131→memory floor plan block 122→memory floor plan block 132→ . . . .

[0057] In this manner, a required number of memory floor plan blocks that meets an order from the customer are arranged, whereby design data of a CPU macro having the ordered memory capacity can be created.

[0058] A process for creating a floor plan of a CPU macro to order will be now described in detail.

[0059]FIG. 2 illustrates an exemplary design data structure. In the example shown in FIG. 2, a clip module block 141 is additionally provided above the memory floor plan region 120 which is located above the fixed block 110. Similarly, another clip module block 142 is provided below the memory floor plan region 130 which is located below the fixed block 110. The clip module blocks 141 and 142 are floor plan blocks from which fixed signals are input to predetermined ones of input/output terminals of the memory floor plan blocks 131, 132, . . . within the memory floor plan regions 120 and 130, respectively.

[0060] The individual floor plan blocks are connected to each other via input/output terminals 11 to 15, 21 to 25, 31 to 35, 41 to 45, 51 to 55, and 61 to 65. The input/output terminals 11 to 15 connect the fixed block 110 to the memory floor plan block (not shown) in the memory floor plan region 120. The input/output terminals 21 to 25 connect the fixed block 110 to the memory floor plan block 131 in the memory floor plan region 130. The input/output terminals 31 to 35 connect the memory floor plan block 131 to the memory floor plan block 132, and the input/output terminals 41 to 45 connect the memory floor plan block 131 to another memory floor plan block (not shown) in the memory floor plan region 130. The input/output terminals 51 to 55 connect the memory floor plan block (not shown) in the memory floor plan region 120 to the clip module block 141, and the input/output terminals 61 to 65 connect the memory floor plan block (not shown) in the memory floor plan region 130 to the clip module block 142.

[0061] The fixed block 110 includes a CPU core circuit and a peripheral circuit, and five types of signal are input to and output from the fixed block. An n1-bit memory output control signal is transferred between the individual floor plan blocks via the input/output terminals 11, 21, 31, 41, 51 and 61, and n2-bit memory output data is transferred between the individual floor plan blocks via the input/output terminals 12, 22, 32, 42, 52 and 62. An n3-bit memory address is transferred between the individual floor plan blocks via the input/output terminals 13, 23, 33, 43, 53 and 63, an n4-bit memory input clock signal is transferred between the individual floor plan blocks via the input/output terminals 14, 24, 34, 44, 54 and 64, and n5-bit memory write data is transferred between the individual floor plan blocks via the input/output terminals 15, 25, 35, 45, 55 and 65. Each of n1, n2, n3, n4 and n5 represents an integer greater than or equal to “1.”

[0062] In the example of FIG. 2, the memory floor plan block 131 is a floor plan block for ROM, and the memory floor plan block 132 is a floor plan block for RAM.

[0063] The memory floor plan block 131 for ROM is constituted by ROM circuits 131 a to 131 c, AND (logical product) gates 131 d to 131 f, and OR (logical sum) gates 131 g to 131 i. Data can be previously stored in the ROM circuits 131 a to 131 c and can be read out as needed.

[0064] The ROM circuits 131 a to 131 c are each input with the memory address and the memory input clock signal through the input/output terminals 23 and 24, respectively. The output of the ROM circuit 131 a is input to the AND gate 131 d. The output of the ROM circuit 131 b is input to the AND gate 131 e, and the output of the ROM circuit 131 c is input to the AND gate 131 f. Each of the AND gates 131 d to 131 f is also input with the memory output control signal through the input/output terminal 21.

[0065] The output of the AND gate 131 d is input to the OR gate 131 g. The outputs of the AND gates 131 e and 131 f are input to the OR gate 131 i, of which the output is input to the OR gate 131 g. The output of the OR gate 131 g is input to the OR gate 131 h, which is input also with the memory output data through the input/output terminal 32. The output of the OR gate 131 h is supplied through the input/output terminal 22 to the fixed block 110 as the memory output data. The memory write data, which is input from the input/output terminal 25, is output to the memory floor plan block 132 for RAM through the input/output terminal 35.

[0066] The memory floor plan block 132 for RAM is constituted by RAM circuits 132 a and 132 b, AND gates 132 c and 132 d, and an OR gate 132 e. The RAM circuits 132 a and 132 b permit data to be written therein as needed and also permit the data written therein to be read out as needed.

[0067] The RAM circuits 132 a and 132 b are each input with the memory address, memory input clock signal and memory write data through the input/output terminals 33, 34 and 35, respectively. The output of the RAM circuit 132 a is input to the AND gate 132 c, while the output of the RAM circuit 132 b is input to the AND gate 132 d. The AND gates 132 c and 132 d are input also with the memory output control signal through the input/output terminal 31.

[0068] The outputs of the AND gates 132 c and 132 d are input to the OR gate 132 e, which is also input with the memory output data from the input/output terminal 42. The output of the OR gate 132 e is supplied through the input/output terminal 32 to the memory floor plan block 131 as the memory output data.

[0069] The memory floor plan blocks in the memory floor plan region 120 are configured in the same manner as the memory floor plan blocks 131 and 132 in the memory floor plan region 130 but are rotated by 180 degrees.

[0070] In the clip module block 141, a ground-level (low-level) signal is supplied to the input/output terminal 52 through a buffer circuit 141 a. Signals supplied to the clip module block 141 from the other input/output terminals 51, 53, 54 and 55 are open.

[0071] Also, in the clip module block 142, a ground-level signal is supplied to the input/output terminal 62 through a buffer circuit 142 a. Signals supplied to the clip module block 142 from the other input/output terminals 61, 63, 64 and 65 are open.

[0072] With the floor plan blocks configured as described above, the memory output control signal, memory address, memory input clock signal and memory write data output from the fixed block 110 are supplied to the individual memory floor plan blocks 131, 132, . . . . Also, the memory output data output from the individual memory floor plan blocks 131, 132, . . . is supplied to the fixed block 110.

[0073] In the case where data is read from the ROM circuit 131 a, for example, the memory address assigned to the ROM circuit 131 a is output from the fixed block 110. The memory address thus output is input to the memory floor plan block 131 through the input/output terminal 23. Each of the ROM circuits 131 a, 131 b and 131 c admits the memory address in synchronism with the memory input clock signal supplied from the fixed block 110.

[0074] Thereupon, the ROM circuit 131 a fetches data from its storage region corresponding to the input memory address and outputs the data to the AND gate 131 d. When the memory output control signal is asserted, the AND gate 131 d outputs the data input thereto. The data output from the AND gate 131 d is transferred to the fixed block 110 through the OR gates 131 g and 131 h and the input/output terminal 22.

[0075] In this manner, data in the memory floor plan blocks can be read out by the CPU core circuit in the fixed block 110.

[0076] In the case where data is written into the RAM circuit 132 a, for example, the memory address assigned to the RAM circuit 132 a as well as memory write data are output from the fixed block 110. The memory address and memory write data thus output are input to the memory floor plan block 132 through the input/output terminals 33 and 35, respectively. Each of the RAM circuits 132 a and 132 b admits the memory address in synchronism with the memory input clock signal supplied from the fixed block 110. Thereupon, the RAM circuit 132 a writes the data into its storage region corresponding to the input memory address.

[0077] In this manner, data output from the CPU core circuit in the fixed block 110 can be written into the memory floor plan blocks.

[0078] In the design data illustrated in FIG. 2, the inputs of signals supplied to the fixed block 110 are fixed at low level (ground level), by way of input signal clipping, in the clip module blocks 141 and 142. This prevents the input signals to the memory floor plan blocks from becoming unstable.

[0079] Further, in this embodiment, each memory floor plan block is provided with input/output terminals at both upper and lower sides thereof, and the upper and lower input/output terminals are in one-to-one correspondence so that signals of the same types may be input to and output from the corresponding input/output terminals. Thus, when memory floor plan blocks are connected above and below, the input/output terminals associated with the same types of signals coincide in position. Consequently, a desired number of memory floor plan blocks can be concatenated.

[0080] Moreover, the memory floor plan block for ROM is provided with a signal line which allows RAM memory write data to pass therethrough. It is therefore possible to connect memory floor plan blocks for ROM and RAM in a manner such that they are mixed in desired arrangement.

[0081] As for the design data associated with each floor plan block, floor plan data, for example, may be created in a data format such as LEF (Library Exchange Format) or DEF (Design Exchange Format), and mask pattern data may be created in the GDS data format.

[0082] Also, the memory floor plan blocks can be arranged so as to provide a desired memory capacity complying with an order from the customer. The memory capacity (bit, word, column) per memory floor plan block and the memory type (ROM, RAM, etc.) can also be set as desired.

[0083] A procedure for a process for creating a floor plan of a CPU macro to order will be now described in detail. The CPU macro floor plan creation process can be divided roughly into a design data creation process (first through fourth steps explained above), which is executed beforehand independent of an order from the customer, and an order-matching floor plan creation process (fifth step).

[0084]FIG. 3 illustrates a procedure for the design data creation process. In the following, the process shown in FIG. 3 will be explained in order of step number.

[0085] [Step S1] A logic design of individual floor plan blocks is prepared. For example, using software installed in a computer, a designer prepares a logic design of individual floor plan blocks and stores the contents of the logic design in the computer.

[0086] [Step S2] A floor plan/layout of the fixed block is created. Specifically, the lateral dimension (length in the X-axis direction) of the fixed block is determined so that the aspect ratio of the CPU macro may fall within a predetermined range when the memory floor plan regions have a maximum area (maximum memory) and also when the memory floor plan regions have a minimum area (minimum memory). Then, circuit wiring and the like are designed such that the CPU core circuit and the peripheral circuit are contained in a region with the determined lateral dimension. At this time, physical verification of the floor plan/layout of the fixed block is carried out, to thereby create a floor plan/layout that fulfills predetermined rules such as wiring pitch.

[0087] [Step S3] A floor plan/layout of the memory floor plan block is created. At this time, physical verification of the floor plan/layout of the memory floor plan block is carried out, to thereby create a floor plan/layout that fulfills predetermined rules such as wiring pitch. A plurality of memory floor plan blocks may be created for different storage capacities or different types.

[0088] [Step S4] A floor plan/layout of the clip module block is created. At this time, physical verification of the floor plan/layout of the clip module block is carried out, to thereby create a floor plan/layout that fulfills predetermined rules such as wiring pitch.

[0089] [Step S5] Timing verification is carried out with respect to the maximum memory.

[0090] [Step S6] The result of the timing verification for the maximum memory is checked, and if there is no problem, the process proceeds to Step S9. If there arises a problem, the process returns to Step S2 to again create floor plans/layouts.

[0091] [Step S7] Timing verification is carried out with respect to the minimum memory.

[0092] [Step S8] The result of the timing verification for the minimum memory is checked, and if there is no problem, the process proceeds to Step S9. If there arises a problem, the process returns to Step S2 to again create floor plans/layouts.

[0093] [Step S9] Design data is created for each of the floor plan blocks.

[0094] This completes the generation of design data associated with each of the floor plan blocks.

[0095] A manner of how the shape (lateral dimension X_(F) and vertical dimension Y_(F)) of the fixed block is determined in Step S2 will be now explained in detail.

[0096] The shape of the fixed block depends upon the aspect ratio of the configuration of memory that can eventually be mounted. Namely, the shape of the fixed block is determined so that the aspect ratio may fall within the predetermined range whatever the memory configuration may be. Specifically, the shape of the fixed block is adjusted with respect to memory configurations with maximum and minimum aspect ratios, respectively, such that the maximum and minimum aspect ratios fall within the predetermined range.

[0097]FIG. 4 illustrates information used in determining the shape of the fixed block, wherein X and Y axes are taken along the lateral direction and the vertical direction, respectively. The vertical dimension Y_(S) and lateral dimension X_(S) of the frame of the CPU macro 100 determine the aspect ratio (Y_(S)/X_(S)).

[0098] The CPU macro 100 is provided with a margin with a width 60 at its borders. Accordingly, the lateral dimension X_(S) of the frame of the CPU macro 100 has a value greater by twice the marginal width α than the lateral dimension X_(F) of the fixed block 110. The memory floor plan blocks 121, 122, . . . , 12N, 131, 132, . . . , 13M and the clip module blocks 141 and 142 have a lateral dimension X_(B) almost equal to the lateral dimension X_(F) of the fixed block 110. The clip module blocks 141 and 142 have a vertical dimension of Y_(C).

[0099] The vertical dimension Y_(S) of the frame of the CPU macro 100 is determined by the number of memories mounted. In the example shown in FIG. 4, N (N is a natural number) memory floor plan blocks 121, 122, . . . , 12N are arranged in the upper memory floor plan region 120, and M (M is a natural number) memory floor plan blocks 131, 132, 13M are arranged in the lower memory floor plan region 130.

[0100] In such cases, the shape (lateral dimension X_(F) and vertical dimension Y_(F)) of the fixed block 110 is determined in the manner indicated below.

c≧(aY _(A) +Y _(F)+2Y _(C)+2α)/(X _(F)+2α)  (1)

d≦(bY _(B) +Y _(F)+2Y _(C)+2α)/(X _(F)+2α)  (2)

[0101] where c and d are the maximum and minimum values of the aspect ratio, respectively, and α is the width of the marginal space and may be a desired value greater than or equal to “0.” Y_(A) represents the length of one memory floor plan block in the Y direction when the memory capacity is at a maximum in compliance with the specification of the CPU macro 100, and Y_(B) represents the length of one memory floor plan block in the Y direction when the memory capacity is at a minimum in compliance with the specification of the CPU macro 100. Symbol a represents the number of memory floor plan blocks when the memory capacity is at the maximum in compliance with the specification of the CPU macro 100, and b represents the number of memory floor plan blocks when the memory capacity is at the minimum in compliance with the specification of the CPU macro 100.

[0102] From among the combinations of the values X_(F) and Y_(F) satisfying the expressions (1) and (2) above, a suitable shape is determined. For example, a shape with an aspect ratio closest to “1” is selected.

[0103] In the case of a configuration with no clip module blocks like the one shown in FIG. 1, the term “2Y_(C)” in the expressions (1) and (2) is unnecessary.

[0104] Once the lateral and vertical dimensions of the fixed block are settled, the shapes of the other floor plan blocks are determined. Then, floor plans/layouts within the individual floor plan blocks are created so as to fit in the respective shapes, and are saved as design data associated with the respective floor plan blocks.

[0105] Subsequently, based on the design data associated with the individual floor plan blocks, design data of a CPU macro with a memory configuration complying with an order from the customer is generated.

[0106]FIG. 5 illustrates a procedure for a process for creating a floor plan complying with an order from the customer. In the following, the process shown in FIG. 5 will be explained in order of step number.

[0107] [Step S11] The customer's specification is determined. In this embodiment, the memory configuration is determined in compliance with an order from the customer.

[0108] [Step S12] The floor plan/layout is determined in compliance with the customer's specification. Specifically, memory floor plan blocks matching the memory configuration are added above and below the fixed block. At this time, a type of memory having a low data input/output speed is arranged close to the fixed block. In the case where ROM is slower than RAM, for example, memory floor plan blocks for ROM are arranged adjacent to the fixed block 110, and then memory floor plan blocks for RAM are arranged adjacent to the memory floor plan blocks for ROM.

[0109] [Step S13] A timing library is created. The timing library has registered therein information about the propagation (delay etc.) of signal between component elements (e.g., flip-flops).

[0110] [Step S14] The created timing library is delivered to the customer.

[0111] [Step S15] Floor plan data and mask pattern data are created and delivered to the customer.

[0112] In this manner, the design data of a CPU macro complying with each order from the customer is created and delivered to the customer. When the design data of the individual floor plan blocks is created, not only the physical verification is carried out but the timing verification is performed under the tightest conditions (under conditions wherein signal delay is most likely to occur). It is therefore unnecessary to carry out the timing verification when an order is received from the customer. As a result, the floor plan or layout need not be re-created, whereby design data of a CPU macro complying with the customer's order can be created in a short period of time.

[0113] As a method of supplying the design data of the CPU macro, the process shown in FIG. 5 may be executed by a computer to automatically generate the design data. The function of automatically generating design data is hereinafter called CPU macro generator.

[0114] For example, design data (Netlist, DEF, LEF, GDS, etc.) of individual floor plan blocks is prepared and stored in a storage device. The customer inputs parameters (memory configuration, technology code) to the CPU macro generator, whereupon the CPU macro generator automatically collects necessary parts and outputs desired design data. In this case, the CPU macro generator may be caused to further calculate the specification of the created CPU macro based on the input parameters.

[0115]FIG. 6 exemplifies such automatic generation of design data. As shown in FIG. 6, design data associated with each of a fixed block 221, memory floor plan block 222 and clip module block 223 is stored beforehand in a storage device 220.

[0116] Parameters are input to a CPU macro generator 210. The parameters include, for example, a memory configuration, a technology code, etc. A plurality of parameters that can be input may be prepared in advance, to allow the user to select parameters from among the prepared parameters.

[0117] Thereupon, the CPU macro generator 210 collects necessary data from among the design data (LEF, DEF, GDS, etc.) already created for the individual floor plan blocks, and generates design data of the whole CPU macro. For example, if the scale of memory is small (small memory scale), design data for a configuration like that of a CPU macro 100 a including two memory floor plan blocks 121 and 131 is generated. If the scale of memory is larger than that of the CPU macro 100 a (medium memory scale), design data for a configuration like that of a CPU macro 100 b including five memory floor plan blocks 121, 122, 131, 132 and 133 is generated. If the scale of memory is even larger (large memory scale), design data for a configuration like that of a CPU macro 100 c including six memory floor plan blocks 121 a, 122, 123, 131 a, 132 a and 133 is generated. The memory floor plan blocks 121 a, 131 a and 132 a are larger in storage capacity than the memory floor plan blocks 121, 131 and 132.

[0118] Also, the CPU macro generator 210 accepts the user's input or selection of memory configuration/capacity as parameters, collects necessary data from among the design data (e.g., size and power consumption) prepared in advance for the individual memory floor plan blocks, and outputs design data of the CPU macro 100 (e.g., specification information such as the overall size and power consumption of the CPU macro 100). This makes it possible to reduce the man-hour needed for the estimation of specification and the provision of data.

[0119]FIG. 7 shows an exemplary hardware configuration of a computer for performing the function of the CPU macro generator. The computer 200 is in its entirety under the control of a CPU 201. To the CPU 201 are connected, through a bus 207, a RAM 202, a hard disk drive (HDD) 203, a graphics processor 204, an input interface 205, and a communication interface 206.

[0120] The RAM 202 temporarily stores OS (Operating System) programs and at least part of application programs executed by the CPU 201. The RAM 202 also stores various other data necessary for the processing by the CPU 201. The HDD 203 stores the OS and application programs, as well as design data of various floor plan blocks.

[0121] The graphics processor 204 is connected to a monitor 301. In accordance with instructions from the CPU 201, the graphics processor 204 causes the monitor 301 to display images on the screen. The input interface 205 is connected to a keyboard 302 and a mouse 303. The input interface 205 sends signals input from the keyboard 302 and the mouse 303 to the CPU 201 through the bus 207.

[0122] The communication interface 206 is connected to a network 310 and transmits and receives data to and from other computers through the network 310.

[0123] With the hardware configuration described above, the CPU macro generator of this embodiment can be implemented.

[0124] As described above, according to the embodiment of the present invention, satisfactory operation can be guaranteed for a memory configuration that is closest to the operating limit in accordance with the specification of the CPU macro, by using the method of creating floor plans having regularity. Also, the floor plan creation method according to this embodiment permits the supply of design data as well as the estimation of macros, whereby the period needed for the development of CPU macros can be shortened.

[0125] In the foregoing embodiment, the input signals are fixed at low level by way of input signal clipping, but may alternatively be fixed at high level.

[0126] Also, to accomplish the processing function of the CPU macro generator, there is provided a functional block design program in which is described a process for performing the function of the CPU macro generator. The functional block design program is executed by a computer, whereby the processing function of the CPU macro generator is accomplished by the computer. The functional block design program describing the process may be recorded on a computer-readable recording medium. The computer-readable recording medium includes magnetic recording device, optical disc, magneto-optical recording medium, semiconductor memory, etc. Such a magnetic recording device may be hard disk drive (HDD), flexible disk (FD), magnetic tape, etc. As the optical disc, DVD (Digital Versatile Disc), DVD-RAM (Random Access Memory), CD-ROM (Compact Disc Read Only Memory), CD-R (Recordable)/RW (ReWritable) or the like may be used. The magneto-optical recording medium includes MO (Magneto-Optical disc) etc.

[0127] To distribute the functional block design program, portable recording media, such as DVD and CD-ROM, on which the program is recorded may be put on sale. Also, the functional block design program may be stored in the storage device of a server computer and may be transferred from the server computer to other computers through a network.

[0128] A computer which is to execute the functional block design program stores, in its storage device, the functional block design program recorded on a portable recording medium or transferred from the server computer, for example. The computer loads the functional block design program from its storage device and performs processing in accordance with the functional block design program. Alternatively, the computer may read in the functional block design program directly from the portable recording medium to perform processing in accordance with the functional block design program. Further, as the functional block design program is transferred from the server computer, the computer may sequentially perform processing in accordance with the received program.

[0129] As described above, according to the present invention, design data of a functional block in which a desired number of memory blocks corresponding to a desired memory capacity are connected to a fixed block is generated with the use of block-based design data which is verified beforehand in that the constraint on the creation of the functional block is always fulfilled within the limits up to which the memory blocks can be mounted. Accordingly, the generated design data always fulfills the constraint. Consequently, it is unnecessary to verify each of functional blocks with different memory capacities as to the constraint, whereby the period needed for the design of functional blocks can be shortened.

[0130] The foregoing is considered as illustrative only of the principles of the present invention. Further, since numerous modifications and changes will readily occur to those skilled in the art, it is not desired to limit the invention to the exact construction and applications shown and described, and accordingly, all suitable modifications and equivalents may be regarded as falling within the scope of the invention in the appended claims and their equivalents. 

What is claimed is:
 1. A functional block design method for designing a functional block including a memory, comprising: creating block-based design data associated with each of a memory block with a predetermined data storage capacity and a fixed block different from the memory block, in accordance with a predetermined logic design; verifying with respect to the created block-based design data that a constraint on creation of the functional block is always fulfilled within limits up to which the memory blocks can be mounted; and generating, with use of the verified block-based design data, design data of a functional block in which a desired number of the memory blocks corresponding to a desired memory capacity are connected to the fixed block.
 2. The functional block design method according to claim 1, wherein the constraint comprises a condition relating to signal delay.
 3. The functional block design method according to claim 1, wherein in the verification as to the constraint, it is judged that the constraint is always fulfilled if it is confirmed that a memory configuration with respect to which the constraint is tightest satisfies the constraint.
 4. The functional block design method according to claim 3, wherein in the verification as to the constraint, it is verified whether the constraint is fulfilled or not when the memory blocks are mounted up to an upper limit thereof.
 5. The functional block design method according to claim 1, wherein, when the block-based design data is created, shapes of the memory block and the fixed block are determined so that the functional block in which a desired number of the memory blocks are connected within the limits in compliance with a predetermined connection rule may always have a vertical dimension-to-lateral dimension ratio falling within a predetermined range, and when the design data of the functional block is generated, the memory blocks are connected to the fixed block in compliance with the predetermined connection rule.
 6. The functional block design method according to claim 5, wherein the predetermined connection rule requires that the memory blocks be concatenated from a position adjacent to the fixed block.
 7. The functional block design method according to claim 6, wherein the predetermined connection rule requires that the memory blocks be concatenated from positions adjacent to opposite two sides of the fixed block.
 8. The functional block design method according to claim 6, wherein the predetermined connection rule requires that the memory blocks be concatenated in a direction intersecting with adjacent sides of the fixed block and the memory blocks.
 9. The functional block design method according to claim 5, wherein the shape of the fixed block is settled by determining a length of a side of the fixed block where the fixed block is connected to the memory blocks.
 10. The functional block design method according to claim 5, wherein, when the design data of the functional block is generated, a clip module block for supplying a signal of a predetermined level to an input/output terminal of a terminal one of the memory blocks is connected to the terminal memory block.
 11. The functional block design method according to claim 1, wherein, when the block-based design data is created, input/output terminals are provided on each of two opposite sides of the memory block at respective identical distances from a side of the memory block adjacent to the two sides.
 12. The functional block design method according to claim 11, wherein an internal circuit for the memory block is designed on precondition that signals of identical types are input to and output from the respective input/output terminals provided on the two opposite sides of the memory block at the respective identical distances from the adjacent side.
 13. The functional block design method according to claim 1, wherein the block-based design data associated with the memory block includes a plurality of design data generated with respect to different memory types.
 14. The functional block design method according to claim 13, wherein block-based design data associated with read only memory includes wiring for passing a write signal therethrough.
 15. A functional block design method for automatically designing a functional block including a memory with use of a computer, comprising: storing beforehand in a storage device, block-based design data associated with each of a memory block and a fixed block different from the memory block, the block-based design data being verified in that a constraint on creation of the functional block is always fulfilled within limits up to which the memory blocks can be mounted; and generating, in response to an input specifying a memory capacity, design data of a functional block in which a desired number of the memory blocks corresponding to the specified memory capacity are connected to the fixed block, with use of the block-based design data stored in the storage device.
 16. A functional block design apparatus for automatically designing a functional block including a memory, comprising: a storage device for storing block-based design data associated with each of a memory block and a fixed block different from the memory block, the block-based design data being verified in that a constraint on creation of the functional block is always fulfilled within limits up to which the memory blocks can be mounted; and an arithmetic unit, responsive to an input specifying a memory capacity, for generating, with use of the block-based design data stored in the storage device, design data of a functional block in which a desired number of the memory blocks corresponding to the specified memory capacity are connected to the fixed block.
 17. A functional block design program for automatically designing a functional block including a memory, wherein the functional block design program causes a computer to perform a process of: storing beforehand in a storage device, block-based design data associated with each of a memory block and a fixed block different from the memory block, the block-based design data being verified in that a constraint on creation of the functional block is always fulfilled within limits up to which the memory blocks can be mounted; and generating, in response to an input specifying a memory capacity, design data of a functional block in which a desired number of the memory blocks corresponding to the specified memory capacity are connected to the fixed block, with use of the block-based design data stored in the storage device.
 18. A computer-readable recording medium having a functional block design program recorded thereon for automatically designing a functional block including a memory, wherein the functional block design program causes the computer to perform a process of: storing beforehand in a storage device, block-based design data associated with each of a memory block and a fixed block different from the memory block, the block-based design data being verified in that a constraint on creation of the functional block is always fulfilled within limits up to which the memory blocks can be mounted; and generating, in response to an input specifying a memory capacity, design data of a functional block in which a desired number of the memory blocks corresponding to the specified memory capacity are connected to the fixed block, with use of the block-based design data stored in the storage device. 